package day10.FileTest;

import java.io.File;
import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        System.out.println("输入文件夹:");
        String s = new Scanner(System.in).nextLine();
        File dir = new File(s);
        if(!dir.isDirectory()){
            System.out.println("不是文件夹");
            return;
        }
        long size = dirLength(dir);
        System.out.println(size);
    }

    private static long dirLength(File dir) {
        /*
        [a]
         | - b
         | - c
         | - [d]
              | ...

            *) 对dir目录列表
            *) 把列表文件和文件夹大小加在一起
            *) 文件夹大小，用递归调用获取
         */
        File[] files = dir.listFiles();
        if(files == null){
            return 0;
        }
        long sum = 0;
        for (File f: files) {
            if(f.isFile()){ //f 是文件
                sum += f.length();
            }else{ // f 是文件夹
                sum += dirLength(f); //递归求文件夹大小
            }
        }
        return sum;

    }
}
